#!/bin/bash

# 获取脚本所在的绝对路径目录
SCRIPT_REAL_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="$SCRIPT_REAL_PATH/.venv"
CONFIG_FILE="$SCRIPT_REAL_PATH/.xzimg_config"
SCRIPT_DIR="$SCRIPT_REAL_PATH/scripts"
MIRROR_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
VERSION="1.0.0"

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color

# 处理重置命令
if [ "$1" = "-r" ]; then
    echo -e "${YELLOW}正在删除现有虚拟环境...${NC}"
    if [ -d "$VENV_DIR" ]; then
        rm -rf "$VENV_DIR"
        echo -e "${GREEN}虚拟环境已删除${NC}"
    else
        echo -e "${YELLOW}未找到现有虚拟环境${NC}"
    fi
    
    if [ -f "$CONFIG_FILE" ]; then
        rm "$CONFIG_FILE"
        echo -e "${GREEN}配置文件已删除${NC}"
    fi
    
    echo -e "${CYAN}即将重新创建虚拟环境...${NC}"
    INITIALIZED=false
else
    # 检查配置文件是否存在，并且initialized是否为true
    INITIALIZED=false
    if [ -f "$CONFIG_FILE" ]; then
        INIT_VALUE=$(grep "initialized" "$CONFIG_FILE" | cut -d= -f2)
        if [ "$INIT_VALUE" = "true" ]; then
            INITIALIZED=true
        fi
    fi
fi

if [ "$INITIALIZED" = "false" ]; then
    echo -e "${YELLOW}首次执行，正在为您创建一个只用于本工具的Python虚拟环境...${NC}"
    
    # 检查Python是否安装
    if ! command -v python3 &> /dev/null; then
        echo -e "${RED}错误: 未找到Python3，请先确保你的电脑上已经安装Python3${NC}"
        exit 1
    fi
    
    # 创建虚拟环境
    python3 -m venv "$VENV_DIR"
    
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}虚拟环境创建成功！${NC}路径: $VENV_DIR"
        # 创建配置文件标记已初始化
        echo "initialized=true" > "$CONFIG_FILE"
        echo "venv_path=$VENV_DIR" >> "$CONFIG_FILE"
        echo "created_date=$(date)" >> "$CONFIG_FILE"
        echo "script_dir=$SCRIPT_DIR" >> "$CONFIG_FILE"
        echo "mirror_url=$MIRROR_URL" >> "$CONFIG_FILE"

        # 检查requirements.txt文件是否存在
        REQUIREMENTS_FILE="$(pwd)/requirements.txt"
        if [ -f "$REQUIREMENTS_FILE" ]; then
            echo -e "${CYAN}正在安装工具所需依赖...${NC}"
            echo -e "${PURPLE}🌈 这个过程会需要一点时间，等一会就好啦🌈${NC}"
            # 激活虚拟环境并安装依赖
            source "$VENV_DIR/bin/activate"
            "$VENV_DIR/bin/pip" install --upgrade pip
            # 使用配置文件中的镜像源进行安装
            "$VENV_DIR/bin/pip" install -r "$REQUIREMENTS_FILE" -i "$MIRROR_URL"
            
            if [ $? -eq 0 ]; then
                echo -e "${GREEN}🎉依赖安装成功！🎉${NC}"
            else
                echo -e "${RED}依赖安装失败，请检查requirements.txt文件或手动安装${NC}"
            fi
            # 退出虚拟环境
            deactivate
        else
            echo -e "${YELLOW}未检测到requirements.txt文件，跳过依赖安装${NC}"
        fi
        
    else
        echo -e "${RED}创建虚拟环境失败，请检查您的Python安装${NC}"
        exit 1
    fi
fi

# 如果是重置命令，完成后退出
if [ "$1" = "-r" ]; then
    echo -e "${GREEN}虚拟环境已重置完成！${NC}"
    exit 0
fi

# 获取虚拟环境路径
if [ -f "$CONFIG_FILE" ]; then
    VENV_PATH=$(grep "venv_path" "$CONFIG_FILE" | cut -d= -f2)
fi

# 处理命令行参数
if [ $# -gt 0 ]; then
    case "$1" in
        "koutu")
            KOUTU_SCRIPT="$SCRIPT_DIR/koutu.py"
            
            if [ -f "$KOUTU_SCRIPT" ]; then
                # 激活虚拟环境并执行脚本，将所有参数传递给Python脚本
                if [ -n "$VENV_PATH" ] && [ -d "$VENV_PATH" ]; then
                    source "$VENV_PATH/bin/activate"
                    python "$KOUTU_SCRIPT" "${@:2}"  # 传递除第一个参数外的所有参数
                    RESULT=$?
                    deactivate
                    exit $RESULT
                else
                    echo -e "${YELLOW}警告: 虚拟环境不存在，使用系统Python执行${NC}"
                    python3 "$KOUTU_SCRIPT" "${@:2}"  # 传递除第一个参数外的所有参数
                    exit $?
                fi
            else
                echo -e "${RED}错误: koutu.py脚本不存在，请确保脚本位于 $SCRIPT_DIR 目录下${NC}"
                exit 1
            fi
            ;;
        "format")
            FORMAT_SCRIPT="$SCRIPT_DIR/format.py"
            
            if [ -f "$FORMAT_SCRIPT" ]; then
                # 激活虚拟环境并执行脚本，将所有参数传递给Python脚本
                if [ -n "$VENV_PATH" ] && [ -d "$VENV_PATH" ]; then
                    source "$VENV_PATH/bin/activate"
                    python "$FORMAT_SCRIPT" "${@:2}"  # 传递除第一个参数外的所有参数
                    RESULT=$?
                    deactivate
                    exit $RESULT
                else
                    echo -e "${YELLOW}警告: 虚拟环境不存在，使用系统Python执行${NC}"
                    python3 "$FORMAT_SCRIPT" "${@:2}"  # 传递除第一个参数外的所有参数
                    exit $?
                fi
            else
                echo -e "${RED}错误: format.py脚本不存在，请确保脚本位于 $SCRIPT_DIR 目录下${NC}"
                exit 1
            fi
            ;;
        "--help"|"-h")
            echo -e "${CYAN}${BOLD}xzimg - 图像处理工具${NC}"
            echo ""
            echo -e "${BOLD}用法:${NC} xzimg [命令] [参数]"
            echo ""
            echo -e "${BOLD}可用命令:${NC}"
            echo -e "  ${GREEN}koutu${NC}               执行抠图功能"
            echo -e "  ${GREEN}format${NC}              执行格式转换功能"
            echo -e "  ${GREEN}--help, -h${NC}          显示帮助信息"
            echo -e "  ${GREEN}-r${NC}                  删除并重新创建虚拟环境"
            echo ""
            echo -e "${BOLD}详细帮助:${NC}"
            echo -e "  ${YELLOW}xzimg koutu --help${NC}    查看抠图功能的详细用法"
            echo -e "  ${YELLOW}xzimg format --help${NC}   查看格式转换功能的详细用法"
            echo ""
            echo -e "${BOLD}环境信息:${NC}"
            if [ -f "$CONFIG_FILE" ]; then
                echo -e "  虚拟环境: ${BLUE}$VENV_PATH${NC}"
                echo -e "  脚本目录: ${BLUE}$SCRIPT_DIR${NC}"
                CREATED_DATE=$(grep "created_date" "$CONFIG_FILE" | cut -d= -f2-)
                echo -e "  创建日期: ${BLUE}$CREATED_DATE${NC}"
                echo -e "  版本: ${GREEN}$VERSION${NC}"
            else
                echo -e "  ${YELLOW}尚未初始化环境${NC}"
            fi
            ;;
        *)
            echo -e "${RED}未知命令: $1${NC}"
            echo -e "使用 '${YELLOW}xzimg --help${NC}' 查看可用命令"
            ;;
    esac
else
    # 没有参数且已经初始化过，显示工具信息
    if [ -f "$CONFIG_FILE" ]; then
        echo -e "${CYAN}${BOLD}✨欢迎使用星凪图片工具✨${NC}"
        echo -e "当前版本${GREEN}$VERSION${NC}"
        echo -e "${BOLD}目前支持的工具有${NC}"
        echo -e "${BLUE}1. 图片抠图(去除背景)${NC}"
        echo -e "${BLUE}2. 图片格式转换${NC}"
        echo -e "可以使用${YELLOW}xzimg --help${NC} 命令查看具体的用法"
        echo -e "也可以使用${YELLOW}xzimg <工具名字> --help${NC} 查看工具的详细用法"
        echo -e "${YELLOW}卸载的话直接删除工具所在的文件夹就可以了，本工具所有的文件均在一个文件夹内${NC}"
        echo -e "${YELLOW}卸载完毕后要记得修改你的环境变量嗷~${NC}"
        echo -e "${PURPLE}${BOLD}✨工具持续更新中...✨${NC}"
    fi
fi
